
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Modelo;

import Entidades.Prestamo;
import Entidades.Proyecto;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

/**
 *
 * @author Administrador
 */
@Stateless
public class FachadaProyecto {

    @PersistenceContext(unitName = "ProyectosPU")
    private EntityManager em;
    

    public void adicionar(Proyecto proyecto) {
        em.persist(proyecto);
    }

    public void actualizar(Proyecto proyecto) {
        em.merge(proyecto);
    }

    public void eliminar(Proyecto proyecto) {
        em.remove(em.merge(proyecto));
    }

    public Collection<Proyecto> buscartitulo(String titulo) {
        Query query = em.createQuery("select p from Proyecto p where p.titulo=?1");
        query.setParameter(1, titulo);
        Collection<Proyecto> resultados = query.getResultList();
        if (resultados.isEmpty()) {
            return null;
        } else {

            return resultados;
        }
    }

    public Collection<Proyecto> buscaraño(int año) {
        Query query = em.createQuery("select p from Proyecto p where p.año=?1");
        query.setParameter(1, año);
        Collection<Proyecto>resultados = query.getResultList();
        if (resultados.isEmpty()) {
            return null;
        } else {

            return resultados;
        }

    }

    public Collection<Proyecto> buscarsemestre(int semestre) {
        Query query = em.createQuery("select p from Proyecto p where p.semestre=?1");
        query.setParameter(1, semestre);
        Collection<Proyecto>resultados = query.getResultList();
        if (resultados.isEmpty()) {
            return null;
        } else {

            return resultados;
        }
    }

    public Collection<Proyecto> buscarpalabraclave(String palabraClave) {
        Query query = em.createQuery("select p from Proyecto p where p.palabraClave=?1");
        query.setParameter(1, palabraClave);
        Collection<Proyecto>resultados = query.getResultList();
        if (resultados.isEmpty()) {
            return null;
        } else {

            return resultados;
        }
    }

    public Collection<Proyecto> buscarTituloyAño(String Titulo, int año) {
        Query query = em.createQuery("select p from Proyecto p where p.titulo=?1 and p.año=?2");
        query.setParameter(1, Titulo);
        query.setParameter(2, año);
        Collection<Proyecto>resultados = query.getResultList();
        if (resultados.isEmpty()) {
            return null;
        } else {

            return resultados;
        }

    }

    public Collection<Proyecto> buscarTituloySemestre(String Titulo, int semestre) {
        Query query = em.createQuery("select p from Proyecto p where p.titulo=?1 and p.semestre=?2");
        query.setParameter(1, Titulo);
        query.setParameter(2, semestre);
        Collection<Proyecto>resultados = query.getResultList();
        if (resultados.isEmpty()) {
            return null;
        } else {

            return resultados;
        }

    }

    public Collection<Proyecto> buscarAñoySemestre(int año, int semestre) {
        Query query = em.createQuery("select p from Proyecto p where p.año=?1 and p.semestre=?2");
        query.setParameter(1, año);
        query.setParameter(2, semestre);
        Collection<Proyecto>resultados = query.getResultList();
        if (resultados.isEmpty()) {
            return null;
        } else {

            return resultados;
        }

    }

    public Collection<Proyecto> buscarTituloAñoySemestre(String Titulo, int año, int semestre) {
        Query query = em.createQuery("select p from Proyecto p where p.titulo=?1 and p.año=?2 and p.semestre=?3");
        query.setParameter(1, Titulo);
        query.setParameter(2, año);
        query.setParameter(3, semestre);
        Collection<Proyecto>resultados = query.getResultList();
        if (resultados.isEmpty()) {
            return null;
        } else {

            return resultados;
        }
    }
    
    public ArrayList<Proyecto> listar()
    {
         ArrayList<Proyecto> proyectos = new ArrayList();
        Query query = em.createQuery("select p from Proyecto p");
        
        for (Object o : query.getResultList()) {
            proyectos.add((Proyecto) o);
        }
        return proyectos;
    }
    public Collection<Proyecto> buscarpalabraclaveyaño(String palabraClave, int año) {
        Query query = em.createQuery("select p from Proyecto p where p.palabraClave=?1 p.año=?2");
        query.setParameter(1, palabraClave);
        query.setParameter(2, año);
        Collection<Proyecto>resultados = query.getResultList();
        if (resultados.isEmpty()) {
            return null;
        } else {

            return resultados;
        }
    }
    public Collection<Proyecto> buscarpalabraclaveytitulo(String titulo ,String palabraClave) {
        Query query = em.createQuery("select p from Proyecto p where p.titulo=?1 and p.palabraClave=?2");
        query.setParameter(1, titulo);
        query.setParameter(2, palabraClave);
        Collection<Proyecto>resultados = query.getResultList();
        if (resultados.isEmpty()) {
            return null;
        } else {

            return resultados;
        }
    }
    
public void cambiardisponibilidadcd(String titulo,String cd )
{
     Query query = em.createQuery("UPDATE Proyecto p SET p.disponibilidadCd=?1 where p.titulo=?2");
     query.setParameter(1, cd);   
     query.setParameter(2, titulo);
        query.executeUpdate();
}
public void cambiardisponibilidaddocumento(String titulo,String documento )
{
     Query query = em.createQuery("UPDATE Proyecto p SET p.disponibilidadDocumento=?1 where p.titulo=?2");
     query.setParameter(1, documento);   
     query.setParameter(2, titulo);
        query.executeUpdate();
}
}
